package com.iknight.theory.mapper;

import com.iknight.mgr.core.base.BaseMapper;
import com.iknight.theory.model.SegPowerInfo;
import com.iknight.theory.model.TPRecordModel;
import com.iknight.theory.model.TPowerTranModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

@Repository
public interface TeRecordMapper<T extends Serializable, PK extends Serializable> extends BaseMapper<T, PK> {
    /**
     * 批量保存
     * @param entitie
     */
    void batchSave(List<TPRecordModel> entitie);

    /**
     * 根据设备标识删除数据
     * @param equip_id
     */
    void removeDataByEquipId(@Param("equip_id") String equip_id);

    List<Map> getPowerByParam(Map param);

    /**
     * 获取用户电量数据
     * @param param
     * @return
     */
    List<Map> getConsPowerByParam(Map param);

    /**
     * 保存分段电量
     *
     * @param entity
     */
    void saveSegPower(SegPowerInfo entity);

    /**
     * 保存配变电量
     *
     * @param entity
     */
    void saveTranPower(TPowerTranModel entity);

    /**
     * 获取配变电量信息
     * @param param
     * @return
     */
    List<Map> getTranPowerData(Map param);

    /**
     * 根据记录标识删除数据
     *
     * @param record_id
     */
    void removeDataByRecordId(@Param("record_id") String record_id);

    /**
     * 根据记录标识批量删除从属（分段）记录
     *
     * @param record_id
     */
    void removeDataByMainRecordId(@Param("record_id") String record_id);

    /**
     * 根据记录标识获取分段电量信息
     *
     * @param record_id
     * @return
     */
    List<Map> getSegPowerByRecordId(@Param("record_id") String record_id);

    /**
     * 根据记录主键获取计算日志
     *
     * @param record_id
     * @return
     */
    Object getCalLogByRecordId(@Param("record_id") String record_id);

    /**
     * 根据变压器标识删除变压器对应的数据记录
     *
     * @param tran_id
     */
    void removeTranRecordByTranId(@Param("tran_id") String tran_id);

    /**
     * 根据分段标识删除分段对应的数据记录
     *
     * @param seg_id
     */
    void removeSegRecordBySegId(@Param("seg_id") String seg_id);

    /**
     * 根据tranId删除分段记录
     *
     * @param tran_id
     */
    void removeSegRecordByTranId(@Param("tran_id") String tran_id);

    /**
     * 获取台区对应的理论线损数据，用于图表展现
     *
     * @param param
     * @return
     */
    List<Map> getTranPowerByParam(Map param);
}
